home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / TSPA3460 / TSUNTI.INT < prev    next >
Text File  |  1994-08-16  |  4KB  |  89 lines

  1. {$B-,D-,F-,I+,N-,R-,S+,V+}
  2.  
  3. (*
  4. Timo Salmi UNiT I
  5. A Turbo Pascal unit for putting infomation into the program's .exe file
  6. and retrieving .exe file information
  7. All rights reserved 1-Aug-90
  8. Updated 8-Aug-90
  9.  
  10. This unit may be used and distributed freely for PRIVATE, NON-COMMERCIAL,
  11. NON-INSTITUTIONAL purposes, provided it is not changed in any way, and
  12. that a proper attribution is made. For ANY other usage, such as use in a
  13. business enterprise or at a university, contact the author for the terms
  14. of registration.
  15.  
  16. The units are under development. Comments and contacts are solicited. If
  17. you have any questions, please do not hesitate to use electronic mail for
  18. communication.
  19. InterNet address: ts@uwasa.fi
  20.  
  21. The author shall not be liable to the user for any direct, indirect or
  22. consequential loss arising from the use of, or inability to use, any unit,
  23. program or file howsoever caused. No warranty is given that the units and
  24. programs will work under all circumstances.
  25.  
  26. Timo Salmi
  27. Professor of Accounting and Business Finance
  28. Faculty of Accounting & Industrial Management; University of Vaasa
  29. P.O. BOX 297, FIN-65101 Vaasa, Finland
  30. *)
  31.  
  32. unit TSUNTI;
  33.  
  34. (* ======================================================================= *)
  35.                           interface
  36. (* ======================================================================= *)
  37.  
  38. uses Dos
  39.      {$IFDEF VER40}  (* To provide what TP 4.0 is missing *)
  40.      ,TSUNT45        (* as compared to TP 5.0 and TP 5.5 *)
  41.      {$ENDIF}
  42.      ;
  43.  
  44. (* ====================================================================
  45.                     Write / read the .exe file
  46.    ==================================================================== *)
  47.  
  48. (* This procedure returns the number of times the program has been called.
  49.    It also returns an error status string. In case of success the status
  50.    string is empty, that is ''. The procedure works by saving the count
  51.    into your compiled .exe file. The counter is initialized to 0 every
  52.    time when you (re)compile your program. Note that after calling USECOUNT
  53.    {$I+} will have been turned on. Making the .exe file readonly will
  54.    invoke an error status. *)
  55. procedure USECOUNT (var TimesCalled : longint;
  56.                     var status      : string);
  57.  
  58. (* Here is a faster and more general alternative to USECOUNT. This one is,
  59.    however, much more difficult to use since you have to provide it the
  60.    necessary information all youself. Study the example test in TSUNTI.TST
  61.    carefully and experiment to get the hang of it. Does not work for
  62.    MsDos versions earlier than 3. For earlier versions does nothing.
  63.    Be very careful to give the correct size of your variable (SizeOfVariable)
  64.    to the routine. Record variables are allowed, so you can pass on large
  65.    amounts of information in the .exe. *)
  66. procedure BRANDEXE
  67.   (var Variable;               (* any type of variable information *)
  68.    SizeOfVariable : word;      (* give the size of your variable *)
  69.    var status     : word);     (* returns 0 if successfull *)
  70.  
  71. (* This function calculates the direct chekcsum of your program's .exe
  72.    file when you include this function in your program. The trick is
  73.    that the var Variable (which can be of any type) is not included
  74.    in the checksum. Thus the Variable can contain any prerecorded
  75.    information such as what the checksum should be. Be very careful to
  76.    give the correct size of your variable (SizeOfVariable) to the routine.
  77.    Record variables are allowed. The function requires at least Dos version
  78.    3.0, TP version 5.0 or 5.5, and a heap of about 12000 bytes. If the
  79.    checksum calculation cannot be performed fails, chksumfn returns 0.
  80.  
  81.       Study TSUNTI.TST TEST4 carefully for the correct usage
  82.  
  83.    *)
  84. function CHKSUMFN
  85.   (var Variable;               (* any type of variable information *)
  86.    SizeOfVariable : word)      (* give the size of your variable *)
  87.      : longint;
  88.  
  89.